import math

print("hello world")

"""
这是块注释
"""

# 这是行注释

''' 通过;可以分隔代码，但是不建议将多行代码写到一行
'''
print("hello world");
print("hello world")

''' 整形（int）
'''
print(0b110)  # 二进制整数
print(0o110)  # 八进制整数
print(100)  # 十进制整数
print(0x110)  # 十六进制整数

''' 浮点型（fload）
'''
print(123.456)  # 数学写法
print(123.456e2)  # 科学计数法
print(123.456e-2)  # 科学计数法

''' 字符串型
'''
print('hello')  # 用单引号包裹
print("world")  # 用双引号包裹

''' 布尔型
'''
print(True, False)  # 只有True和False两种值

# 使用变量进行编码
a = 25
b = 12
print(a + b)
print(a * b)
print(a / b)
print(a - b)

''' 使用type函数检查变量类型
'''
a = 1
b = 1.1
c = '1'
d = True
print(type(a))  # <class 'int'>
print(type(b))  # <class 'float'>
print(type(c))  # <class 'str'>
print(type(d))  # <class 'bool'>

''' 对变量进行类型转换 
'''
a = 100
b = 123.45
c = '123'
d = "100"
e = "123.45"
f = 'hello world'
g = True
h = False
i = None
j = ''
print(a, b, c, d, e, f, g, h, i, j)
print(float(a))  # int类型的100转成float，输出100.0
print(int(b))  # float类型的123.45转成int，输出123
print(int(c))  # str类型的'123'转成int，输出123
print(int(c, base=16))  # str类型的'123'按十六进制转成int，输出291
print(int(d, base=2))  # str类型的'100'按二进制转成int，输出4
print(float(e))  # str类型的'123.45'转成float，输出123.45
print(bool(f))  # str类型的'hello,world'转成bool，输出True
print(int(g))  # bool类型的True转成int，输出1
print(chr(a))  # int类型的100转成str，输出'd'
print(ord('d'))  # str类型的'd'转成int，输出100
print(int(h))  # bool类型的False转成int，输出0
print(bool(i))  # None转成bool，输出False
print(bool(j))  # str类型的''转成bool，输出False

''' 算术运算符 
'''
print(321 + 12)  # 加法运算，输出333
print(321 - 12)  # 减法运算，输出309
print(321 * 12)  # 乘法运算，输出3852
print(321 / 12)  # 除法运算，输出26.75
print(321 // 12)  # 整除运算，输出26
print(321 % 12)  # 求模运算，输出9
print(321 ** 12)  # 求幂运算，输出1196906950228928915420617322241
print(2 + 3 * 5)  # 17
print((2 + 3) * 5)  # 25
print((2 + 3) * 5 ** 2)  # 125
print(((2 + 3) * 5) ** 2)  # 625

''' 位运算符
'''
print(1 << 2)  # 左移运算，输出4
print(4 >> 1)  # 右移运算，输出2
print(4 | 2)  # 右移运算，输出6
print(5 & 1)  # 右移运算，输出1
print(5 ^ 2)  # 右移运算，输出7
print(~1)  # 按位取反运算，输出-2

''' 比较运算符与逻辑运算符
'''
flag0 = 1 == 1
flag1 = 3 > 2
flag2 = 2 < 1
flag3 = flag1 and flag2
flag4 = flag1 or flag2
flag5 = not flag0
print('flag0 =', flag0)  # flag0 = True
print('flag1 =', flag1)  # flag1 = True
print('flag2 =', flag2)  # flag2 = False
print('flag3 =', flag3)  # flag3 = False
print('flag4 =', flag4)  # flag4 = True
print('flag5 =', flag5)  # flag5 = False
print(flag1 and not flag2)  # True
print(1 > 2 or 2 == 3)  # False

''' 赋值运算符
'''
a = 10
b = 3
a += b  # 相当于：a = a + b
a *= a + 2  # 相当于：a = a * (a + 2)
print(a)  # 输出195
print((a := 15))  # 海象运算符是赋值表达式，在赋值后返回=右侧的计算结果

''' 将华氏温度转换成摄氏温度
'''
f = 50
c = (f - 32) / 1.8
print(f'{f:.1f}华氏度 = {c:.1f}摄氏度')

''' 计算圆的周长和面积
'''
radius = 5
pai = math.pi
perimeter = pai * radius * 2
area = pai * radius ** 2
print(f"周长：{perimeter:.2f}")
print(f"面积：{area:.2f}")

''' 判断闰年
'''
year = 2025
is_leap = year % 4 == 0 and year % 400 == 0 and year % 100 != 0
print(f'{is_leap=}')
